package com.klm.easymq.core;

/**
 * 幂等处理器接口
 * 支持Caffeine和Redis两种存储方式
 */
public interface IdempotentHandler {
    
    /**
     * 检查消息是否已处理
     * @param key 幂等键
     * @return true表示已处理，false表示未处理
     */
    boolean isProcessed(String key);
    
    /**
     * 尝试获取幂等锁
     * @param key 幂等键
     * @return true表示成功获取锁，false表示已存在
     */
    boolean tryAcquire(String key);
    
    /**
     * 标记消息为已处理
     * @param key 幂等键
     * @param expireSeconds 过期时间（秒）
     */
    void markProcessed(String key, int expireSeconds);
    
    /**
     * 删除幂等记录
     * @param key 幂等键
     */
    void remove(String key);
    
    /**
     * 获取处理器类型
     * @return 处理器类型
     */
    String getType();
} 